A rotary encoder allows to determine a position of a moving device. An exemplified embodiment of a rotary encoder is a magnetic rotary encoder that allows to sense a current rotational position, for example a rotating angle, of a rotating magnet. The magnet is usually arranged above or below a chip of the magnetic rotary encoder. To measure a rotating angle of the magnet, a two-pole magnet rotating over the center of the chip of the magnetic rotary encoder is required. The rotating magnet generates a rotating magnetic field that is sensed by the magnetic rotary encoder, for example by Hall sensors of the encoder. The encoder is configured to determine a current position of the rotating magnet by an appropriate signal processing of the sensed rotating magnetic field of the magnet.
The accuracy of magnetic rotary encoders primarily depends on noise and integral non-linearity (INL). The noise can be reduced by a (low-pass) filter. However, the reduction of the INL is much harder to realize. The noise after the filter is in the range of about 0.1°, but the error caused by the INL is in the range of up to 3° and depends primarily on the magnet position and the magnet. The INL error could be reduced by using a burnt INL-correction circuit. However, the use of a burnt INL-correction circuit requires a calibration for each chip and also cannot react to temperature- and lifetime-drift.
It is a desire to provide a controller to reduce integral non-linearity errors (INL-errors) of a rotary encoder that allows to determine a position of a rotating magnet with high accuracy by reducing the INL induced error.